#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "tdicethread.h"
#include<QImage>
#include<QString>
#include<QPixmap>
#include<QPushButton>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    threadA=new TdiceThread(this);

    //线程打开
    connect(threadA,&TdiceThread::started,this,&MainWindow::toStartThread);
    //线程结束
    connect(threadA,&TdiceThread::finished,this,&MainWindow::toEndThread);
    //newvalue，在run函数中促发这个creatnewvalue信号，带着返回的结果在textwidget中打印想要的信息
    connect(threadA,&TdiceThread::createnewvalue,this,&MainWindow::toNewValue);


    connect(ui->btn_boost,&QPushButton::clicked,this,&MainWindow::btn_start_trigger);
    connect(ui->btn_end,&QPushButton::clicked,this,&MainWindow::btn_end_trigger);
    connect(ui->btn_start,&QPushButton::clicked,this,&MainWindow::btn_run_trigger);
    connect(ui->btn_pause,&QPushButton::clicked,this,&MainWindow::btn_pause_trigger);
    //connect(ui->btn_clear,&QPushButton::clicked,this,&MainWindow::
    connect(ui->btn_clear,&QPushButton::clicked,this,[=](){
        ui->plainTextEdit->clear();

    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::toStartThread()
{
    //启动线程，与start信号关联
    //先改变状态标签
    ui->status_lab->setText("thread状态：启动线程。");
    //再改变btn状态
    ui->btn_boost->setEnabled(false);//启动线程
    ui->btn_start->setEnabled(true);//开始按钮变灰
    ui->btn_pause->setEnabled(true);//暂停
    ui->btn_end->setEnabled(true);//结束
    ui->btn_clear->setEnabled(true);

}

void MainWindow::toEndThread()
{
    //结束线程，与finish信号关联
    //先改变状态标签
    ui->status_lab->setText("thread状态：结束线程。");
    //再改变btn状态
    ui->btn_boost->setEnabled(true);//启动线程
    ui->btn_start->setEnabled(false);//开始
    ui->btn_pause->setEnabled(false);//暂停
    ui->btn_end->setEnabled(false);//结束
    ui->btn_clear->setEnabled(true);

}

void MainWindow::toNewValue(int cur_times,int cur_value)
{
    //与newvalue信号关联
    qDebug()<<"触发createnewvalue信号后，进入同newvalue函数";
    QString str=QString::asprintf("第 %d  次掷骰子，点数为 %d ",cur_times,cur_value);
    qDebug()<<str;
    ui->plainTextEdit->appendPlainText(str);
    ui->plainTextEdit->update();
    QString imgname=QString::asprintf(":/C:\\Users\\AIDITE\\Desktop\\image/%d.png",cur_value);
    QPixmap img;
    img.load(imgname);
    ui->lab_picture->setPixmap(img);
    ui->lab_picture->update();
}
void MainWindow::btn_start_trigger(){
    //启动线程按钮
    threadA->start();
}

void MainWindow::btn_end_trigger()
{
//终止线程按钮
    threadA->threadstop();
}

void MainWindow::btn_run_trigger()
{
//开始掷骰子
    ui->btn_start->setEnabled(false);
    //threadA->run();
    //threadA->dice_pause=true;
    threadA->diceBegin();
}

void MainWindow::btn_pause_trigger()
{
//暂停
    ui->btn_start->setEnabled(true);
    threadA->dicePause();
}

void MainWindow::btn_clear_trigger()
{

}

void MainWindow::closeEvent(QCloseEvent *e){
    //窗口关闭
    if(threadA->isRunning()){
        threadA->terminate();//强制终止
        threadA->wait();
    }
    e->accept();
}
